'use strict';
var vk; // 全局vk实例
// 涉及的表名
// const dbName = {
// 	//test: "vk-test", // 测试表
// };
const dbName = "mbxh-nrgl";

var db = uniCloud.database(); // 全局数据库引用
var _ = db.command; // 数据库操作符
var $ = _.aggregate; // 聚合查询操作符
/**
 * 权限注意：访问以下链接查看
 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#内置权限
 */
var cloudObject = {
	isCloudObject: true, // 标记为云对象模式
	/**
	 * 请求前处理，主要用于调用方法之前进行预处理，一般用于拦截器、统一的身份验证、参数校验、定义全局对象等。
	 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#before-预处理
	 */
	_before: async function() {
		vk = this.vk; // 将vk定义为全局对象
		// let { customUtil, uniID, config, pubFun } = this.getUtil(); // 获取工具包
	},
	/**
	 * 请求后处理，主要用于处理本次调用方法的返回结果或者抛出的错误
	 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#after-后处理
	 */
	_after: async function(options) {
		let { err, res } = options;
		if (err) {
			return; // 如果方法抛出错误，直接return;不处理
		}
		return res;
	},
	/**
	 * 获取列表
	 * @url client/hymbjy/pub/news.getNewsById 前端调用的url参数地址
	 */
	getNewsById: async function(data) {
		let res = { code: 0, msg: '' };
		// 业务逻辑开始-----------------------------------------------------------
		const redis = await vk.redis();
		const rddata = await redis.get('mbxh-nrgl-getNewsById:'+data.tempid);
		 
		if(rddata){
			res.info = JSON.parse(rddata)
		}else{
			res.info = await vk.baseDao.findById({
			  dbName: dbName,
			  id: data.tempid
			});
			await redis.set('mbxh-nrgl-getNewsById:'+data.tempid,JSON.stringify(res.info),'EX',3600*24)
		}
		res.info.ydcs = await redis.incr('mbxh-nrgl-getNewsById-incr:'+data.tempid);
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 获取列表
	 * @url client/hymbjy/pub/news.getNewsList 前端调用的url参数地址
	 */
	getNewsList: async function(data) {
		let res = { code: 0, msg: '' };
		//let { uid } = this.getClientInfo(); // 获取客户端信息
		// 业务逻辑开始-----------------------------------------------------------
		const redis = await vk.redis();
		const rddata = await redis.get('mbxh-nrgl:index');
		if(rddata){
			res.list = JSON.parse(rddata)
			res.redis = "redis"
		}else{
			res.redis = "Noredis"
			res.list = await vk.baseDao.select({
			  dbName: dbName, // 表名
			  getCount: true, // 是否需要同时查询满足条件的记录总数量，默认false
			  getMain: true, // 是否只返回rows数据，默认false
			  pageIndex: 1, // 当前第几页
			  pageSize: 1000, // 每页条数
			  whereJson: { // 条件
			    nrtype: _.in(['xwzx','zcfg','llyj','xhwj','xhhd','mjrw','djgz','sytw','mxrw','hyfc','yqlj','djgztzgg'])  // 金额大于0
			  },
			  // 代表只显示_id和money字段
			  fieldJson: {
			    _id: true,title:true,nrdate:true,nrtype:true,image1:true,zuozhe:true,linkdizhi:true,_add_time:true
			  },
			  // 按_id降序 asc 升序 desc 降序 
			  sortArr: [
			    { name: "_add_time", type: "desc" }
			  ],
			});
			
			await redis.set('mbxh-nrgl:index',JSON.stringify(res.list),'EX',15638400)
		}
		
		for (let i = 0; i < res.list.length; i++) {
			res.list[i].ydcs = await redis.incr('mbxh-nrgl-getNewsById-incr:'+res.list[i]._id)
		}
		
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 获取列表
	 * @url client/hymbjy/pub/news.getNewsListPlus 前端调用的url参数地址
	 */
	getNewsListPlus: async function(data) {
		let res = { code: 0, msg: '' };
		//let { uid } = this.getClientInfo(); // 获取客户端信息
		// 业务逻辑开始-----------------------------------------------------------
		const redis = await vk.redis();
		const rddata = await redis.get('mbxh-nrgl:index');
		if(rddata){
			res.list = JSON.parse(rddata)
			res.redis = "redis"
		}else{
			res.redis = "Noredis"
			res.list = await vk.baseDao.select({
			  dbName: dbName, // 表名
			  getCount: true, // 是否需要同时查询满足条件的记录总数量，默认false
			  getMain: true, // 是否只返回rows数据，默认false
			  pageIndex: 1, // 当前第几页
			  pageSize: 1000, // 每页条数
			  whereJson: { // 条件
			    nrtype: _.in(['xwzx','zcfg','llyj','xhwj','xhhd','mjrw','djgz','sytw','mxrw'])  // 金额大于0
			  },
			  // 代表只显示_id和money字段
			  fieldJson: {
			    _id: true,title:true,nrdate:true,nrtype:true,image1:true
			  },
			  // 按_id降序 asc 升序 desc 降序 
			  sortArr: [
			    { name: "_add_time", type: "desc" }
			  ],
			});
			await redis.set('mbxh-nrgl:index',JSON.stringify(res.list),'EX',15638400)
		}
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 获取列表
	 * @url client/hymbjy/pub/news.getNewsListPlusApp 前端调用的url参数地址
	 */
	getNewsListPlusApp: async function(data) {
		let res = { code: 0, msg: '' };
		//let { uid } = this.getClientInfo(); // 获取客户端信息
		// 业务逻辑开始-----------------------------------------------------------
		const redis = await vk.redis();
		const rddata = await redis.get('mbxh-nrgl-getNewsListPlusApp:index');
		if(rddata){
			res.list = JSON.parse(rddata)
		}else{
			res.list = await vk.baseDao.select({
			  dbName: dbName, // 表名
			  getCount: true, // 是否需要同时查询满足条件的记录总数量，默认false
			  getMain: true, // 是否只返回rows数据，默认false
			  pageIndex: 1, // 当前第几页
			  pageSize: 500, // 每页条数
			  whereJson: { // 条件
			    nrtype: _.in(['xwzx','xhwj','djgz','sytw'])  // 金额大于0
			  },
			  // 代表只显示_id和money字段
			  fieldJson: {
			     _id: true,title:true,nrdate:true,nrtype:true,_add_time_str:true,image1:true
			  },
			  // 按_id降序 asc 升序 desc 降序 
			  sortArr: [
			    { name: "_add_time", type: "desc" }
			  ],
			});
			await redis.set('mbxh-nrgl-getNewsListPlusApp:index',JSON.stringify(res.list),'EX',15638400)
		}
		for (let i = 0; i < res.list.length; i++) {
			res.list[i].ydcs = await redis.get('mbxh-nrgl-getNewsById-incr:'+res.list[i]._id)
		}
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 获取列表
	 * @url client/hymbjy/pub/news.getNewsTjcxList 前端调用的url参数地址
	 */
	getNewsTjcxList: async function(data) {
		let res = { code: 0, msg: '' };
		//let { uid } = this.getClientInfo(); // 获取客户端信息
		// 业务逻辑开始-----------------------------------------------------------
		
		const redis = await vk.redis();
		const rddata = await redis.get('mbxh-nrgl-getNewsTjcxList:index');
		if(rddata){
			res.list = JSON.parse(rddata)
		}else{
			res.list = await vk.baseDao.select({
			  dbName: dbName, // 表名
			  getCount: true, // 是否需要同时查询满足条件的记录总数量，默认false
			  getMain: true, // 是否只返回rows数据，默认false
			  pageIndex: 1, // 当前第几页
			  pageSize: 20, // 每页条数
			  whereJson: { // 条件
			    nrtype: _.in(data.tjcx)  // 金额大于0
			  },
			  // 代表只显示_id和money字段
			  fieldJson: {
			    _id: true,title:true,nrdate:true,nrtype:true,_add_time_str:true
			  },
			  // 按_id降序 asc 升序 desc 降序 
			  sortArr: [
			    { name: "_add_time", type: "desc" }
			  ],
			});
			await redis.set('mbxh-nrgl-getNewsTjcxList:index',JSON.stringify(res.list),'EX',3600*24)
		}
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 获取列表
	 * @url client/hymbjy/pub/news.getNewsListAll 前端调用的url参数地址
	 */
	getNewsListAll: async function(data) {
		let res = { code: 0, msg: '' };
		// 业务逻辑开始-----------------------------------------------------------
		const redis = await vk.redis();
			res.list = await vk.baseDao.select({
			  dbName:dbName, // 表名
			  getCount:true, // 是否需要同时查询满足条件的记录总数量，默认false
			  getMain:true, // 是否只返回rows数据，默认false
			  pageIndex:1, // 当前第几页
			  pageSize:1000, // 每页条数
			  whereJson:{ // 条件
				nrtype:_.in([data.nrtype])
			  },
			  // 代表只显示_id和money字段
			  fieldJson:{
				_id: true,title:true,nrdate:true,nrtype:true,_add_time_str:true,_add_time:true,image1:true,zuozhe:true,
				linkdizhi:true
			  },
			  // 按_id降序 asc 升序 desc 降序 
			  sortArr:[
				{ name:"_add_time", type:"desc" }
			  ],
			});
			
			//await redis.incr('mbxh-nrgl-getNewsById-incr:'+data.tempid);
			for (let i = 0; i < res.list.length; i++) {
				res.list[i].ydcs = await redis.get('mbxh-nrgl-getNewsById-incr:'+res.list[i]._id)
			}
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 获取列表
	 * @url client/hymbjy/pub/news.getNewsListAllPuls 前端调用的url参数地址
	 */
	getNewsListAllPuls: async function(data) {
		let res = { code: 0, msg: '' };
		// 业务逻辑开始-----------------------------------------------------------
			const redis = await vk.redis();
			const rddata = await redis.get('getNewsListAllPuls:'+data.xwlx);
			if(rddata){
				res.list = JSON.parse(rddata)
			}else{
				res.list = await vk.baseDao.select({
				  dbName:dbName, // 表名
				  getCount:true, // 是否需要同时查询满足条件的记录总数量，默认false
				  getMain:true, // 是否只返回rows数据，默认false
				  pageIndex:1, // 当前第几页
				  pageSize:1000, // 每页条数
				  whereJson:{ // 条件
				    nrtype:_.in(data.nrtype)
				  },
				  // 代表只显示_id和money字段
				  fieldJson:{
					_id: true,title:true,nrdate:true,nrtype:true,_add_time_str:true,_add_time:true,image1:true,zuozhe:true,
					linkdizhi:true
				  },
				  // 按_id降序 asc 升序 desc 降序 
				  sortArr:[
				    { name:"_add_time", type:"desc" }
				  ],
				});
				await redis.set('getNewsListAllPuls:'+data.xwlx,JSON.stringify(res.list),'EX',3600)
			}
			
			

			
			//await redis.get(key);
			for (let i = 0; i < res.list.length; i++) {
				res.list[i].ydcs = await redis.get('mbxh-nrgl-getNewsById-incr:'+res.list[i]._id)
			}
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 获取列表
	 * @url client/hymbjy/pub/news.getNewsListWzss 前端调用的url参数地址
	 */
	getNewsListWzss: async function(data) {
		let res = { code: 0, msg: '' };
		// 业务逻辑开始-----------------------------------------------------------
		const redis = await vk.redis();
		const rddata = await redis.get('mbxh-nrgl-getNewsListWzss:'+data.title);
		if(rddata){
			res.list = JSON.parse(rddata)

		}else{
			res.list = await vk.baseDao.select({
			  dbName:dbName, // 表名
			  getCount:true, // 是否需要同时查询满足条件的记录总数量，默认false
			  getMain:true, // 是否只返回rows数据，默认false
			  pageIndex:1, // 当前第几页
			  pageSize:1000, // 每页条数
			  whereJson:{ // 条件
			    title:new RegExp(data.title)
			  },
			  // 代表只显示_id和money字段
			  fieldJson:{
				_id: true,title:true,nrdate:true,nrtype:true,_add_time_str:true,_add_time:true,image1:true,zuozhe:true
			  },
			  // 按_id降序 asc 升序 desc 降序 
			  sortArr:[
			    { name:"_add_time", type:"desc" }
			  ],
			});
			await redis.set('mbxh-nrgl-getNewsListWzss:'+data.title,JSON.stringify(res.list),'EX',3600)
		}
		for (let i = 0; i < res.list.length; i++) {
			res.list[i].ydcs = await redis.get('mbxh-nrgl-getNewsById-incr:'+res.list[i]._id)
		}
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
};

module.exports = cloudObject;
